﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Grupo2.Persistencia;
using Grupo2.Dominio;

namespace Grupo2.Pruebas
{
    [TestFixture]
    public class TestExperienciaLaboralDAO
    {
        [Test]
        public void TestCrearExperienciaLaboral()
        {
            //Creamos un objeto nuevoExperienciaLaboral del tipo ExperienciaLaboral
            ExperienciaLaboral nuevoExperienciaLaboral = new ExperienciaLaboral();

            //Asignamos valores a los atributos al objeto nuevoExperienciaLaboral
            nuevoExperienciaLaboral.Id_Experiencia_Laboral = 1;
            nuevoExperienciaLaboral.Postulante.Id_Postulante = 1;
            nuevoExperienciaLaboral.Nombre_Empresa = "Compañia X";
            nuevoExperienciaLaboral.Fecha_Inicio = DateTime.Parse("05/10/2008");
            nuevoExperienciaLaboral.Fecha_Fin = DateTime.Parse("05/10/2010");

            //En este objeto cargaremos los valores
            ExperienciaLaboralDAO ExperienciaLaboralDAO = new ExperienciaLaboralDAO();

            //Creamos un objeto ExperienciaLaboralCreado del tipo ExperienciaLaboral y mediante el método CrearExperienciaLaboral definido en
            //la clase ExperienciaLaboralDAO.cs hacemos luego que ExperienciaLaboralCreado reciba los datos del objeto ExperienciaLaboralDAO
            ExperienciaLaboral ExperienciaLaboralCreado = ExperienciaLaboralDAO.CrearExperienciaLaboral(nuevoExperienciaLaboral);

            //Con esto verificamos que se haya creado el registro en la BD
            Assert.NotNull(ExperienciaLaboralCreado);
        }

        [Test]
        public void TestObtenerExperienciaLaboral()
        {
            Int32 Id_Experiencia_Laboral_Buscado = 1;

            //Creamos un objeto del tipo ExperienciaLaboralDAO
            ExperienciaLaboralDAO experienciaLaboralDAO = new ExperienciaLaboralDAO();

            //Creamos un objeto ExperienciaLaboralExistente y le asignamos los datos obtenido con el método ObtenerExperienciaLaboral
            //que esta definido en la clase ExperienciaLaboralDAO.cs
            ExperienciaLaboral experienciaLaboralExistente = experienciaLaboralDAO.ObtenerExperienciaLaboral(Id_Experiencia_Laboral_Buscado);

            //Con esto verificamos sí hemos el habilidadTecnica buscado se ha encontrado
            Assert.AreEqual(Id_Experiencia_Laboral_Buscado, experienciaLaboralExistente.Id_Experiencia_Laboral);

            //Con esto verificamos que el campo Nombre_Empresa no este vacio
            Assert.NotNull(experienciaLaboralExistente.Nombre_Empresa);
        }

        [Test]
        public void ModificarExperienciaLaboral()
        {
            String Nombre_Empresa_modificado = "CIA";
            ExperienciaLaboralDAO experienciaLaboralDAO = new ExperienciaLaboralDAO();

            ExperienciaLaboral experienciaLaboralExistente = experienciaLaboralDAO.ObtenerExperienciaLaboral(1);
            experienciaLaboralExistente.Nombre_Empresa = Nombre_Empresa_modificado;

            ExperienciaLaboral experienciaLaboralModificado = null;

            Assert.Catch<Exception>(delegate
            {
                experienciaLaboralModificado = experienciaLaboralDAO.CrearExperienciaLaboral(experienciaLaboralExistente);
            });

        }


        [Test]
        public void TestEliminarExperienciaLaboral()
        {
            Int32 Id_Experiencia_Laboral_A_Elminar = 1;

            ExperienciaLaboralDAO experienciaLaboralDAO = new ExperienciaLaboralDAO();

            experienciaLaboralDAO.EliminarExperienciaLaboral(Id_Experiencia_Laboral_A_Elminar);

            ExperienciaLaboral existe = experienciaLaboralDAO.ObtenerExperienciaLaboral(Id_Experiencia_Laboral_A_Elminar);

            Assert.IsNull(existe);
        }  

    }
}